#include <GUI/Views/CardGroup.hpp>
#include <GUI/Util.hpp>
#include <FL/fl_draw.H>

CardGroup::CardGroup(int X, int Y, int W, int H, const char* L)
    : Fl_Group(X, Y, W, H, L)
{
    // 卡片风格：圆角 + 白底 + 左上角标题
    box(FL_ROUNDED_BOX);
    color(GUI::hex_to_fl_color("#ffffff"));
    labelfont(FL_HELVETICA_BOLD);
    labelsize(14);
    labelcolor(GUI::hex_to_fl_color("#495867"));
    align(FL_ALIGN_TOP_LEFT | FL_ALIGN_INSIDE);
}

void CardGroup::set_theme(const GUI::Theme& t)
{
    color(t.card_bg);
    labelcolor(t.text_primary);
    redraw();
}

void CardGroup::draw()
{
    // 1) 背景
    draw_box(box(), color());

    // 2) 子控件（先画子项，标题最后盖在上面）
    draw_children();

    // 3) 标题：左上角内边距
    const int pad_left = 12;
    const int pad_top = 10;
    if (label() && *label())
    {
        fl_push_clip(x(), y(), w(), h());
        fl_font(labelfont(), labelsize());
        fl_color(labelcolor());
        fl_draw(label(), x() + pad_left, y() + pad_top, w() - pad_left * 2, labelsize() + 6,
                FL_ALIGN_LEFT | FL_ALIGN_TOP | FL_ALIGN_INSIDE);
        fl_pop_clip();
    }
}
